package com.eedi.framework.oauth2.controller.org;

import com.eedi.framework.common.pojo.CommonResult;
import com.eedi.framework.common.pojo.PageResult;
import com.eedi.framework.oauth2.service.OrgAuthService;
import com.eedi.framework.user.controller.org.vo.OrgUserAccountPageReq;
import com.eedi.framework.user.controller.org.vo.OrgUserLoginInfoResp;
import io.swagger.v3.oas.annotations.Operation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import io.swagger.v3.oas.annotations.tags.Tag;

import javax.annotation.Resource;

import static com.eedi.framework.common.pojo.CommonResult.success;

/**
 * 提供给外部应用调用为主
 *
 * 1. 在 getUserInfo 方法上，添加 @PreAuthorize("@ss.hasScope('user.read')") 注解，声明需要满足 scope = user.read
 * 2. 在 updateUserInfo 方法上，添加 @PreAuthorize("@ss.hasScope('user.write')") 注解，声明需要满足 scope = user.write
 *
 * @author 永聚长青源码
 */
@Tag(name = "经营界面 - OAuth2.0 用户")
@RestController
@RequestMapping("/org-oauth2/user")
@Slf4j
public class OrgOAuth2UserController {
    @Resource
    private OrgAuthService orgAuthService;

    @GetMapping("/page")
    @Operation(summary = "账号列表(org:user:list)")
    @PreAuthorize("@org.hasPermission('org:user:list')")
    public CommonResult<PageResult<OrgUserLoginInfoResp>> list(OrgUserAccountPageReq req) {
        return success(orgAuthService.query(req));
    }

//    @Resource
//    private AdminUserService userService;
//    @Resource
//    private DeptService deptService;
//
//    @GetMapping("/get")
//    @Operation(summary = "获得用户基本信息")
//    @PreAuthorize("@ss.hasScope('user.read')") //
//    public CommonResult<OAuth2UserInfoRespVO> getUserInfo() {
//        // 获得用户基本信息
//        AdminUserDO user = userService.getUser(getLoginUserId());
//        OAuth2UserInfoRespVO resp = BeanUtils.toBean(user, OAuth2UserInfoRespVO.class);
//        // 获得部门信息
//        if (user.getSystemDeptId() != null) {
//            DeptDO dept = deptService.getDept(user.getSystemDeptId());
//            resp.setDept(BeanUtils.toBean(dept, OAuth2UserInfoRespVO.Dept.class));
//        }
//        return success(resp);
//    }
//
//    @PutMapping("/update")
//    @Operation(summary = "更新用户基本信息")
//    @PreAuthorize("@ss.hasScope('user.write')")
//    public CommonResult<Boolean> updateUserInfo(@Valid @RequestBody OAuth2UserUpdateReqVO reqVO) {
//        // 这里将 UserProfileUpdateReqVO =》UserProfileUpdateReqVO 对象，实现接口的复用。
//        // 主要是，AdminUserService 没有自己的 BO 对象，所以复用只能这么做
//        userService.updateUserProfile(getLoginUserId(), BeanUtils.toBean(reqVO, UserProfileUpdateReqVO.class));
//        return success(true);
//    }

}
